package br.com.officium.managedbean.cadastro;

import br.com.officium.entidade.cadastro.Procedimento;
import br.com.officium.sessionbean.ProcedimentoBsn;
import br.com.officium.util.BeanUtil;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Ivo
 */
@ManagedBean
@ViewScoped
public class ProcedimentoBean extends CadastroAbstractBean {
    
    @EJB
    private ProcedimentoBsn procedimentoBsn;
    private Procedimento procedimento;
    private List<Procedimento> procedimentos;

    public ProcedimentoBean() {
        this.procedimento = new Procedimento();
    }

    @Override
    public void cadastrar() {
        
        try {
            procedimentoBsn.create(procedimento);
            clear();
            BeanUtil.addInfo("Procedimento criado com sucesso.");
            procedimentos = procedimentoBsn.findAll();
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }
        
    }

    @Override
    public void editar() {
        
        try {
            procedimentoBsn.edit(procedimento);
            clear();
            setCurrentState(LISTAR_STATE);
            BeanUtil.addInfo("Procedimento alterado com sucesso.");
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }
        
    }

    @Override
    public void excluir() {
        
        try {
            procedimentoBsn.remove(procedimento);
            BeanUtil.addInfo("Procedimento removido com sucesso.");
            procedimentos = procedimentoBsn.findAll();
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }
        
    }

    @Override
    public String listar() {
        
        setCurrentState(LISTAR_STATE);
        procedimentos = procedimentoBsn.findAll();
        return "/cadastro/procedimento.jsf";
        
    }
    
    private void clear() {
        this.procedimento = new Procedimento();
        super.cleanSubmittedValues(panelForm);
    }

    public Procedimento getProcedimento() {
        return procedimento;
    }

    public void setProcedimento(Procedimento procedimento) {
        this.procedimento = procedimento;
    }

    public List<Procedimento> getProcedimentos() {
        return procedimentos;
    }

    public void setProcedimentos(List<Procedimento> procedimentos) {
        this.procedimentos = procedimentos;
    }

}
